home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d26 / cattest.arc / PROCTOR4.PAS < prev    next >
Pascal/Delphi Source File  |  1991-07-01  |  6KB  |  230 lines

  1. {$A+,B-,D+,E+,F+,I+,L+,N-,O+,R-,S+,V+}
  2. {$M 65520,0,655360}
  3.  
  4. PROGRAM Proctor4;
  5. USES overlay,
  6.      DOS,timestuf,CRT,UTILITY,Eval3,uuestuff,q1ovr,q2ovr,q3ovr,q4ovr;
  7.  
  8. {$o q1ovr}
  9. {$o q2ovr}
  10. {$o q3ovr}
  11. {$o q4ovr}
  12.  
  13. LABEL terminator;
  14.  
  15.  
  16. VAR
  17.   OvrName : string;
  18.   Grade : Integer;
  19.   q1done,q2done,q3done,q4done : Boolean;
  20.   DirInfo : SearchRec;
  21.   Ch : char;
  22.   TempFile,
  23.   In_TEXT_UUD_File,
  24.   GRADEFILE : TEXT;
  25.   InFile,
  26.   Outfile : FILE OF Byte; {these are the updated files which will
  27.                              be cloned from the old, and added to
  28.                              possibly }
  29.  
  30.   linenum: INTEGER;
  31.   comment_string : STRING;
  32.   student_password,
  33.   EOFline,
  34.   password,templine,
  35.   temp_in_file_name,
  36.   temp_out_file_name : STRING;
  37.   Line: ARRAY [0..59] OF CHAR;
  38.   k1,k : integer;
  39.  
  40.  
  41. BEGIN {main program}
  42.   ClrScr;
  43.   ovrinit('PROCTOR4.OVR');
  44.   IF OvrResult=ovrNotFound
  45.     THEN
  46.       BEGIN
  47.         WriteLn('Overlay file not found: ',OvrName,'.');
  48.         Pause(1,25,'Aborting');
  49.         halt;
  50.       END;
  51.  
  52.   IF OvrResult <> ovrOK
  53.     THEN
  54.       BEGIN
  55.         Pause(1,24,'Overlay Manager Error, OvrResult = ');
  56.         GoToXY(1,25);
  57.         WriteLn(OvrResult);
  58.         halt;
  59.       END;
  60.  
  61.  
  62.   BEGIN {decode and begin processing}
  63.     ClrScr;
  64.     WriteLn('Processing Gradebook, please wait.');
  65.     q1done := False;
  66.     q2done := False;
  67.     q3done := False;
  68.     q4done := False;
  69. {carry this code along in case we need it later}
  70. (*    FindFirst('*.BK$',Hidden,DirInfo);
  71.   WriteLn('Name         Size   Attr');
  72.   WHILE DosError = 0 DO
  73.     BEGIN
  74.       WITH DirInfo DO
  75.         BEGIN
  76.           Write(Name:12,Size:8,Attr:4);
  77.           IF (Attr AND Hidden) = Hidden
  78.             THEN Write(' Hidden ');
  79.           WriteLn;
  80.           FindNext(DirInfo);
  81.         END;
  82.     END;
  83.   REPEAT
  84.   UNTIL KeyPressed;*)
  85.   Assign(In_TEXT_UUD_File,'GRADE.BK$');
  86.   if not FileExists('GRADE.BK$')
  87.       THEN
  88.         BEGIN
  89.           ClrScr;
  90.           WriteLn('Unable to find original grade file.');
  91.           WriteLn('Check with your instructor.');
  92.           halt;
  93.         END;
  94.  
  95.     Assign(TempFile,'OLDGRADE.BK$');
  96.     if FileExists('OLDGRADE.BK$')
  97.       THEN erase(TempFile);
  98.  
  99.     ReName(In_TEXT_UUD_File,'OLDGRADE.BK$');
  100.     IF IOResult <> 0
  101.       THEN
  102.         BEGIN
  103.           ClrScr;
  104.           WriteLn('Disk Error(1) has occurred. Please report to instructor.');
  105.           halt;
  106.         END;
  107.     decode;
  108.  
  109.     ASSIGN(GRADEFILE,'NEWGRADE.BK$');
  110.     Reset(GRADEFILE);
  111. (* ready to check that student is really who he/she says he/she is *)
  112.     READLN(GRADEFILE, password);
  113.     FOR k := 1 TO length(password) DO
  114.              password[k] := UpCase(password[k]);
  115.     REPEAT
  116.       ClrScr;
  117.       GoToXY(1,1);
  118.       WriteLn('Enter your password followed by an ENTER/RETURN. NO BLANKS');
  119.       ReadLn(student_password);
  120.       FOR k := 1 TO length(student_password) DO
  121.                student_password[k] := UpCase(student_password[k]);
  122.       UNTIL student_password = password;
  123.     REPEAT
  124.       READLN(GRADEFILE,password);
  125.       IF POS('Q1DONE',password) >0
  126.         THEN q1done := True;
  127.       IF POS('Q2DONE',password) >0
  128.         THEN q2done := True;
  129.       IF POS('Q3DONE',password) >0
  130.         THEN q3done := True;
  131.       IF POS('Q4DONE',password) >0
  132.         THEN q4done := True;
  133.       UNTIL eof(GRADEFILE);
  134.       Close(GRADEFILE);
  135.       Assign (GRADEFILE,'NEWGRADE.BK$');
  136.       APPEND (GRADEFILE);
  137.       WriteLn(GRADEFILE,'Opening grade book');
  138.       WriteLn(GRADEFILE,'Grade Book-',Time_Stamp);
  139.  
  140. (* HERE ARE THE EXAMINATION QUESTIONS *)
  141.       IF NOT q1done
  142.         THEN
  143.           BEGIN
  144.             IF q1(Grade)
  145.               THEN {} ;
  146.               Hide('Q1');
  147.             IF Grade = -2
  148.               THEN GOTO terminator;
  149.             WriteLn(GRADEFILE,'Question 1 grade = ',Grade);
  150.             IF Grade = 100
  151.               THEN
  152.                 BEGIN
  153.                   WriteLn(GRADEFILE,'Q1DONE');
  154.                   q1done := true;
  155.                 END;
  156.             WriteLn(GRADEFILE,Time_Stamp);
  157.           END;
  158.       IF NOT q2done
  159.         THEN
  160.           BEGIN
  161.             IF q2(Grade)
  162.               THEN {} ;
  163.               Hide('Q2');
  164.             WriteLn(GRADEFILE,'Question 2 grade = ',Grade);
  165.             IF Grade = 100
  166.               THEN
  167.                 BEGIN
  168.                   WriteLn(GRADEFILE,'Q2DONE');
  169.                   q2done := true;
  170.                 END;
  171.             WriteLn(GRADEFILE,Time_Stamp);
  172.           END;
  173.       IF NOT q3done
  174.         THEN
  175.           BEGIN
  176.             IF q3(Grade)
  177.               THEN {} ;
  178.               Hide('Q3');
  179.             WriteLn(GRADEFILE,'Question 3 grade = ',Grade);
  180.             IF Grade = 100
  181.               THEN
  182.                 BEGIN
  183.                   WriteLn(GRADEFILE,'Q3DONE');
  184.                   q3done := true;
  185.                 END;
  186.             WriteLn(GRADEFILE,Time_Stamp);
  187.           END;
  188.       IF NOT q4done
  189.         THEN
  190.           BEGIN
  191.             IF q4(Grade)
  192.               THEN {} ;
  193.               Hide('Q4');
  194.             WriteLn(GRADEFILE,'Question 4 grade = ',Grade);
  195.             IF Grade = 100
  196.               THEN
  197.                 BEGIN
  198.                   WriteLn(GRADEFILE,'Q4DONE');
  199.                   q4done := true;
  200.                 END;
  201.             WriteLn(GRADEFILE,Time_Stamp);
  202.           END;
  203.  
  204. (* HERE IS THE END OF THE EXAMINATION QUESTIONS *)
  205.       terminator:
  206.  
  207.                   WriteLN(GRADEFILE,'Examination is terminating');
  208.       WriteLn(GRADEFILE,Time_Stamp);
  209.       Close(GRADEFILE);
  210.  
  211.       encode;
  212.  
  213.   {$I-}
  214.       ASSIGN (TempFile, 'NEWGRADE.BK$' ); {temp grade file, to be erased}
  215.       REWRITE (Tempfile);
  216.       Erase(TempFile);
  217.   {$I+}
  218.       IF IoResult <> 0
  219.         THEN WriteLn('Erase Failed, do it manually.');
  220.   {$I-}
  221.       ASSIGN (TempFile, 'OLDGRADE.BK$' ); {temp grade file, to be erased}
  222.       REWRITE (Tempfile);
  223.       Erase(TempFile);
  224.   {$I+}
  225.       IF IoResult <> 0
  226.         THEN WriteLn('Erase Failed, do it manually.');
  227.   END; {encode, and proctor1}
  228.   ClrScr;
  229. END.
  230.